home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C / Applications / µSim 1.1 / FabLibsƒ / Conversions.c next >
Encoding:
C/C++ Source or Header  |  1996-10-14  |  2.2 KB  |  150 lines  |  [TEXT/CWIE]

  1. #include    "Conversions.h"
  2.  
  3. //#pragma smart_code
  4.  
  5. //char *NumToHex2(unsigned long n, short digits);
  6.  
  7. //const char *conv = "0123456789ABCDEF";
  8.  
  9. Ptr MemoryToHexText(long *p, UInt32 len, Ptr text)
  10. {
  11. enum {
  12. kLongLen = 8
  13. };
  14. const char *conv = "0123456789ABCDEF";
  15. int    i;
  16. long    n = *p++;
  17.  
  18. for ( ; len > 0; n = *p++, len -= sizeof(long)) {
  19.     text += kLongLen;
  20.     for (i = kLongLen; i != 0; n >>= 4, --i)
  21.         *--text = conv[n & 0xf];
  22.     text += kLongLen;
  23.     }
  24. return text;
  25. }
  26.  
  27. Ptr ShortToHexText(short n, Ptr text)
  28. {
  29. enum {
  30. kShortLen = 4
  31. };
  32. const char *conv = "0123456789ABCDEF";
  33. register int    i;
  34.  
  35. text += kShortLen;
  36. for (i = kShortLen; i != 0; n >>= 4, --i)
  37.     *--text = conv[n & 0xf];
  38. text += kShortLen;
  39. return text;
  40. }
  41.  
  42. Ptr LongToHexText(long n, Ptr text)
  43. {
  44. enum {
  45. kLongLen = 8
  46. };
  47. const char *conv = "0123456789ABCDEF";
  48. register int    i;
  49.  
  50. text += kLongLen;
  51. for (i = kLongLen; i != 0; n >>= 4, --i)
  52.     *--text = conv[n & 0xf];
  53. text += kLongLen;
  54. return text;
  55. }
  56.  
  57. void ShortToHexString(short n, Str255 out)
  58. {
  59. const char *conv = "0123456789ABCDEF";
  60. register int    i;
  61.  
  62. *out++ = 4;
  63. out += 4;
  64. for (i = 4; i != 0; n >>= 4, --i)
  65.     *--out = conv[n & 0xf];
  66. return;
  67. }
  68.  
  69. void ShortToOctString(short n, Str255 out)
  70. {
  71. const char *conv = "01234567";
  72. register int    i;
  73.  
  74. *out++ = 6;
  75. out += 6;
  76. for (i = 5; i != 0; n >>= 3, --i)
  77.     *--out = conv[n & 0x7];
  78. *--out = conv[n & 0x1];
  79. return;
  80. }
  81.  
  82. void ShortToBinString(short n, Str255 out)
  83. {
  84. const char *conv = "01";
  85. register int    i;
  86.  
  87. *out++ = 16;
  88. out += 16;
  89. for (i = 16; i != 0; n >>= 1, --i)
  90.     *--out = conv[n & 0x1];
  91. return;
  92. }
  93.  
  94. void HexStringToShort(ConstStr255Param in, short *p)
  95. {
  96. register int    i;
  97. register short tmp, ris = 0;
  98.  
  99. i = *in++;
  100. i--;
  101. i <<= 2;
  102. for ( ; i >= 0; i -= 4 ) {
  103.     tmp = *in++;
  104.     tmp -= 48;
  105.     if (tmp > 9)
  106.         tmp -= 7;
  107.     tmp <<= i;
  108.     ris += tmp;
  109.     }
  110. *p = ris;
  111. return;
  112. }
  113.  
  114. void OctStringToShort(ConstStr255Param in, short *p)
  115. {
  116. register short tmp, i, ris = 0;
  117.  
  118. i = *in++;
  119. i--;
  120. tmp = i;
  121. i <<= 1;
  122. i += tmp;
  123. for ( ; i >= 0; i -= 3 ) {
  124.     tmp = *in++;
  125.     tmp -= 48;
  126.     tmp <<= i;
  127.     ris += tmp;
  128.     }
  129. *p = ris;
  130. return;
  131. }
  132.  
  133. void BinStringToShort(ConstStr255Param in, short *p)
  134. {
  135. register int    i;
  136. register short tmp, ris = 0;
  137.  
  138. i = *in++;
  139. i--;
  140. for ( ; i >= 0; i-- ) {
  141.     tmp = *in++;
  142.     tmp -= 48;
  143.     tmp <<= i;
  144.     ris |= tmp;
  145.     }
  146. *p = ris;
  147. return;
  148. }
  149.  
  150.